# Kernel: sgemm_kernel_64
#
# SharedSize: 8192
# Params(8):
#   0:0x140:4:4 param_C,
#   1:0x144:4:0 param_m,
#   2:0x148:4:0 param_n,
#   3:0x14c:4:0 param_k,
#   4:0x150:4:0 param_lda,
#   5:0x154:4:0 param_ldb,
#   6:0x158:4:0 param_ldc
#   7:0x15c:4:0 param_alpha
#   8:0x160:4:4 param_D // for diagnostic printf output
#
# Globals:
#   c[0x0][0x164]: texA (the value is 1)
#   c[0x0][0x168]: texB (the value is 0)

<REGISTER_MAPPING>

    0-63    ~ blk, ldx, ldx4, k, tid1, tid2, tid15, tid15_4, xmad_t0, xmad_end

    80      : zOffset
    0-63    : cz<00-63>

     3, 2,11,10,19,18,27,26 : cx00y<00-03|32-35>
     7, 6,15,14,23,22,31,30 : cx01y<00-03|32-35>
     1, 0, 9, 8,17,16,25,24 : cx02y<00-03|32-35>
     5, 4,13,12,21,20,29,28 : cx03y<00-03|32-35>
    35,34,43,42,51,50,59,58 : cx32y<00-03|32-35>
    39,38,47,46,55,54,63,62 : cx33y<00-03|32-35>
    33,32,41,40,49,48,57,56 : cx34y<00-03|32-35>
    37,36,45,44,53,52,61,60 : cx35y<00-03|32-35>

    64-79   : j0Ax<00-03|32-35>, j0By<00-03|32-35>
    80-95   : j1Ax<00-03|32-35>, j1By<00-03|32-35>

    64-71   : cs<0-7>

    96-111  : loadX0<0-3>, loadX2<0-3>, loadX4<0-3>, loadX6<0-3>

    112-127 ~ track<0|2|4|6>[0], tex[1], readAs[2], readBs[3], writeS[2], end, ldx8, tid, bx, by, tid31, tid32

    72-111  ~ cy<00|04|08|12>, Cy<00|04|08|12>, ldc, ldc1, ldc4, ldc8, ldc28, writeCs, readCs, cx, ci, xmad_ci, alpha, xmadD, D, blckDimX, gridDimX

</REGISTER_MAPPING>

--:-:1:-:1      S2R tid, SR_TID.X;   // Set Dep 1
--:-:2:-:1      S2R bx,  SR_CTAID.X; // Set Dep 2
--:-:3:-:1      S2R by,  SR_CTAID.Y; // Set Dep 3

01:-:-:-:1      ISETP.GE.AND P0, PT, tid, 32, PT; // Wait Dep 1
--:-:-:-:1      LOP.AND tid15, tid, 15;
--:-:-:-:1      BFE.U32 tid2, tid, 0x104; // 1 bit at position 4
--:-:-:-:1      MOV k, c[0x0][0x14c];
--:-:-:-:1      BFE.U32 readAs, tid, 0x301; // 3 bits at position 1
--:-:-:-:1      LOP.AND readBs, tid, 0x30;
--:-:-:-:1      LOP.AND tid1, tid, 1;
--:-:-:-:1      SHL tid15_4, tid15, 4;
--:-:-:-:1      LOP.AND zOffset, tid, -32;
--:-:-:-:1      IADD k, k, -8;
--:-:-:-:1      SHL readAs, readAs, 4;
--:-:-:-:1      LOP.AND tid31, tid, 31;
--:-:-:-:1      SHR.U32 readBs, readBs, 3;
--:-:-:-:0 @!P0 MOV ldx4, c[0x0][0x150];
--:-:-:-:1      STS.128 [zOffset + 4x<16*64>], RZ;
--:-:-:-:1  @P0 MOV ldx4, c[0x0][0x154];
--:-:-:-:1      ISCADD writeS, tid2, tid15_4, 8;
06:-:-:-:1      SEL blk, by, bx, P0;              // Wait Dep 2 & 3
--:-:-:-:1 @!P0 MOV32I tex, 0x80000001; // texA
--:-:-:-:1  @P0 MOV32I tex, 0x80000000; // texB
--:-:-:-:1      LOP.OR readBs, readBs, tid1;
--:-:-:-:1      SHR.U32 ldx, ldx4, 2;
--:-:-:-:1      LOP.AND tid32, tid, 32;
--:-:-:-:1      ISCADD track0, blk, tid15, 4;
--:-:-:-:1      IADD ldx8, ldx4, ldx4;
--:-:-:-:1  @P0 IADD writeS, writeS, 4x<8*64>;
--:-:-:-:1      ISCADD readBs, readBs, 4x<8*64>, 4;
--:-:-:-:1      XMAD.MRG xmad_t0, ldx, tid2.H1, RZ;
--:-:-:-:1      XMAD.MRG xmad_end, k, ldx.H1, RZ;
--:-:-:Y:6      XMAD track0, ldx, tid2, track0;
--:-:-:-:2      XMAD.PSL.CBCC track0, ldx.H1, xmad_t0.H1, track0;
--:-:1:-:4      TLD.B.LZ.P loadX0, track0, tex, 0x0, 1D, 0xf; // Set Dep 1
--:-:-:-:1      IADD3 track2, track0, ldx, ldx;
--:-:-:-:1      IADD track4, track0, ldx4;
--:-:2:-:1      TLD.B.LZ.P loadX2, track2, tex, 0x0, 1D, 0xf; // Set Dep 2
--:-:-:-:0      XMAD end, k, ldx, track0;
--:-:3:-:3      TLD.B.LZ.P loadX4, track4, tex, 0x0, 1D, 0xf; // Set Dep 1
--:-:-:-:2      IADD track6, track2, ldx4;
--:-:4:-:1      TLD.B.LZ.P loadX6, track6, tex, 0x0, 1D, 0xf; // Set Dep 2
--:-:-:-:1      XMAD.PSL.CBCC end, k.H1, xmad_end.H1, end;

--:-:5:-:1      LDS.U.128 cz00, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz04, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz08, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz12, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz16, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz20, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz24, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz28, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz32, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz36, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz40, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz44, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz48, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz52, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz56, [zOffset + 4x<16*64>];
--:-:5:-:1      LDS.U.128 cz60, [zOffset + 4x<16*64>];

01:-:-:-:1      STS.128 [writeS + 4x<0*64>], loadX0; // Wait Dep 1
--:-:-:-:0      IADD track0, track0, ldx8;
02:-:-:-:1      STS.128 [writeS + 4x<2*64>], loadX2; // Wait Dep 2
--:-:-:-:0      IADD track2, track2, ldx8;
04:-:-:-:1      STS.128 [writeS + 4x<4*64>], loadX4; // Wait Dep 3
--:-:-:-:0      IADD track4, track4, ldx8;
08:-:-:-:1      STS.128 [writeS + 4x<6*64>], loadX6; // Wait Dep 4
--:-:-:-:0      IADD track6, track6, ldx8;
10:-:-:-:5      BAR.SYNC 0;

--:-:-:-:0      LOP.XOR writeS, writeS, 4x<16*64>;

--:-:-:-:1      LDS.U.128 j0Ax00, [readAs + 4x<0*64 + 00>];
--:-:-:-:1      LDS.U.128 j0By00, [readBs + 4x<0*64 + 00>];
--:-:-:-:1      LDS.U.128 j0Ax32, [readAs + 4x<0*64 + 32>];
--:-:1:-:1      LDS.U.128 j0By32, [readBs + 4x<0*64 + 32>]; // Set Dep 1

// Efficiency:
// ffma: 512
// lds:  32 dual issued
// sts:  4  dual issued
// tex:  4  dual issued
// add:  4
// xor:  3
// setp: 1
// bar:  1  dual issued
// bra:  1  dual issued
// Total: 520 (512/520 = 98.5% FFMA)

LOOP:

// Loop end condition
--:-:-:-:1      ISETP.LE.AND P0, PT, track0, end, PT;

01:-:-:-:0      FFMA cx02y00, j0Ax02, j0By00, cx02y00; // Wait Dep 1
--:-:-:-:1      LDS.U.128 j1Ax00, [readAs + 4x<1*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j0Ax02, j0By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j0Ax00, j0By01, cx00y01;
--:-:-:-:1      LDS.U.128 j1By00, [readBs + 4x<1*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j0Ax00, j0By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j0Ax03, j0By00, cx03y00;
--:-:-:-:1      LDS.U.128 j1Ax32, [readAs + 4x<1*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j0Ax03, j0By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j0Ax01, j0By01, cx01y01;
--:-:1:-:1      LDS.U.128 j1By32, [readBs + 4x<1*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j0Ax01, j0By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j0Ax34, j0By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j0Ax34, j0By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j0Ax32, j0By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j0Ax32, j0By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j0Ax35, j0By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j0Ax35, j0By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j0Ax33, j0By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j0Ax33, j0By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j0Ax35, j0By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j0Ax35, j0By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j0Ax33, j0By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j0Ax33, j0By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j0Ax34, j0By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j0Ax34, j0By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j0Ax32, j0By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j0Ax32, j0By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j0Ax03, j0By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j0Ax03, j0By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j0Ax01, j0By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j0Ax01, j0By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j0Ax02, j0By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j0Ax02, j0By03, cx02y03;
--:-:-:-:1      FFMA cx00y03, j0Ax00, j0By03, cx00y03;
--:-:-:-:0      FFMA cx00y02, j0Ax00, j0By02, cx00y02;
--:-:-:-:1  @P0 TLD.B.LZ.P loadX0, track0, tex, 0x0, 1D, 0xf;
--:-:-:Y:1      FFMA cx02y32, j0Ax02, j0By32, cx02y32;
--:-:-:-:0      FFMA cx02y33, j0Ax02, j0By33, cx02y33;
--:-:2:-:1  @P0 TLD.B.LZ.P loadX2, track2, tex, 0x0, 1D, 0xf; // Set Dep 2
--:-:-:-:1      FFMA cx00y33, j0Ax00, j0By33, cx00y33;
--:-:-:-:1      FFMA cx00y32, j0Ax00, j0By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j0Ax03, j0By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j0Ax03, j0By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j0Ax01, j0By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j0Ax01, j0By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j0Ax34, j0By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j0Ax34, j0By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j0Ax32, j0By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j0Ax32, j0By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j0Ax35, j0By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j0Ax35, j0By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j0Ax33, j0By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j0Ax33, j0By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j0Ax35, j0By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j0Ax35, j0By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j0Ax33, j0By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j0Ax33, j0By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j0Ax34, j0By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j0Ax34, j0By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j0Ax32, j0By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j0Ax32, j0By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j0Ax03, j0By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j0Ax03, j0By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j0Ax01, j0By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j0Ax01, j0By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j0Ax02, j0By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j0Ax02, j0By35, cx02y35;
--:-:-:-:1      FFMA cx00y35, j0Ax00, j0By35, cx00y35;
--:-:-:-:1      FFMA cx00y34, j0Ax00, j0By34, cx00y34;
01:-:-:-:0      FFMA cx02y00, j1Ax02, j1By00, cx02y00; // Wait Dep 1
--:-:-:-:1      LDS.U.128 j0Ax00, [readAs + 4x<2*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j1Ax02, j1By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j1Ax00, j1By01, cx00y01;
--:-:-:-:1      LDS.U.128 j0By00, [readBs + 4x<2*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j1Ax00, j1By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j1Ax03, j1By00, cx03y00;
--:-:-:-:1      LDS.U.128 j0Ax32, [readAs + 4x<2*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j1Ax03, j1By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j1Ax01, j1By01, cx01y01;
--:-:1:-:1      LDS.U.128 j0By32, [readBs + 4x<2*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j1Ax01, j1By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j1Ax34, j1By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j1Ax34, j1By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j1Ax32, j1By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j1Ax32, j1By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j1Ax35, j1By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j1Ax35, j1By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j1Ax33, j1By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j1Ax33, j1By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j1Ax35, j1By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j1Ax35, j1By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j1Ax33, j1By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j1Ax33, j1By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j1Ax34, j1By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j1Ax34, j1By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j1Ax32, j1By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j1Ax32, j1By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j1Ax03, j1By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j1Ax03, j1By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j1Ax01, j1By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j1Ax01, j1By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j1Ax02, j1By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j1Ax02, j1By03, cx02y03;
--:-:-:-:1      FFMA cx00y03, j1Ax00, j1By03, cx00y03;
--:-:-:-:0      FFMA cx00y02, j1Ax00, j1By02, cx00y02;
--:-:-:-:1  @P0 TLD.B.LZ.P loadX4, track4, tex, 0x0, 1D, 0xf;
--:-:-:Y:1      FFMA cx02y32, j1Ax02, j1By32, cx02y32;
--:-:-:-:0      FFMA cx02y33, j1Ax02, j1By33, cx02y33;
--:-:3:-:1  @P0 TLD.B.LZ.P loadX6, track6, tex, 0x0, 1D, 0xf; // Set Dep 3
--:-:-:-:1      FFMA cx00y33, j1Ax00, j1By33, cx00y33;
--:-:-:-:1      FFMA cx00y32, j1Ax00, j1By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j1Ax03, j1By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j1Ax03, j1By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j1Ax01, j1By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j1Ax01, j1By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j1Ax34, j1By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j1Ax34, j1By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j1Ax32, j1By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j1Ax32, j1By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j1Ax35, j1By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j1Ax35, j1By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j1Ax33, j1By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j1Ax33, j1By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j1Ax35, j1By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j1Ax35, j1By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j1Ax33, j1By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j1Ax33, j1By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j1Ax34, j1By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j1Ax34, j1By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j1Ax32, j1By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j1Ax32, j1By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j1Ax03, j1By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j1Ax03, j1By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j1Ax01, j1By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j1Ax01, j1By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j1Ax02, j1By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j1Ax02, j1By35, cx02y35;
--:-:-:-:1      FFMA cx00y35, j1Ax00, j1By35, cx00y35;
--:-:-:-:1      FFMA cx00y34, j1Ax00, j1By34, cx00y34;
01:-:-:-:0      FFMA cx02y00, j0Ax02, j0By00, cx02y00; // Wait Dep 1
--:-:-:-:1      LDS.U.128 j1Ax00, [readAs + 4x<3*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j0Ax02, j0By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j0Ax00, j0By01, cx00y01;
--:-:-:-:1      LDS.U.128 j1By00, [readBs + 4x<3*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j0Ax00, j0By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j0Ax03, j0By00, cx03y00;
--:-:-:-:1      LDS.U.128 j1Ax32, [readAs + 4x<3*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j0Ax03, j0By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j0Ax01, j0By01, cx01y01;
--:-:1:-:1      LDS.U.128 j1By32, [readBs + 4x<3*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j0Ax01, j0By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j0Ax34, j0By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j0Ax34, j0By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j0Ax32, j0By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j0Ax32, j0By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j0Ax35, j0By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j0Ax35, j0By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j0Ax33, j0By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j0Ax33, j0By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j0Ax35, j0By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j0Ax35, j0By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j0Ax33, j0By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j0Ax33, j0By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j0Ax34, j0By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j0Ax34, j0By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j0Ax32, j0By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j0Ax32, j0By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j0Ax03, j0By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j0Ax03, j0By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j0Ax01, j0By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j0Ax01, j0By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j0Ax02, j0By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j0Ax02, j0By03, cx02y03;
--:-:-:-:1      FFMA cx00y03, j0Ax00, j0By03, cx00y03;
--:-:-:-:1      FFMA cx00y02, j0Ax00, j0By02, cx00y02;
--:-:-:Y:1      FFMA cx02y32, j0Ax02, j0By32, cx02y32;
--:-:-:-:1      FFMA cx02y33, j0Ax02, j0By33, cx02y33;
--:-:-:-:1      FFMA cx00y33, j0Ax00, j0By33, cx00y33;
--:-:-:-:1      FFMA cx00y32, j0Ax00, j0By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j0Ax03, j0By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j0Ax03, j0By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j0Ax01, j0By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j0Ax01, j0By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j0Ax34, j0By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j0Ax34, j0By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j0Ax32, j0By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j0Ax32, j0By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j0Ax35, j0By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j0Ax35, j0By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j0Ax33, j0By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j0Ax33, j0By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j0Ax35, j0By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j0Ax35, j0By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j0Ax33, j0By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j0Ax33, j0By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j0Ax34, j0By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j0Ax34, j0By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j0Ax32, j0By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j0Ax32, j0By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j0Ax03, j0By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j0Ax03, j0By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j0Ax01, j0By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j0Ax01, j0By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j0Ax02, j0By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j0Ax02, j0By35, cx02y35;
--:-:-:-:1      FFMA cx00y35, j0Ax00, j0By35, cx00y35;
--:-:-:-:1      FFMA cx00y34, j0Ax00, j0By34, cx00y34;
01:-:-:-:0      FFMA cx02y00, j1Ax02, j1By00, cx02y00; // Wait Dep 1
--:-:-:-:1      LDS.U.128 j0Ax00, [readAs + 4x<4*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j1Ax02, j1By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j1Ax00, j1By01, cx00y01;
--:-:-:-:1      LDS.U.128 j0By00, [readBs + 4x<4*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j1Ax00, j1By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j1Ax03, j1By00, cx03y00;
--:-:-:-:1      LDS.U.128 j0Ax32, [readAs + 4x<4*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j1Ax03, j1By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j1Ax01, j1By01, cx01y01;
--:-:1:-:1      LDS.U.128 j0By32, [readBs + 4x<4*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j1Ax01, j1By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j1Ax34, j1By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j1Ax34, j1By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j1Ax32, j1By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j1Ax32, j1By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j1Ax35, j1By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j1Ax35, j1By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j1Ax33, j1By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j1Ax33, j1By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j1Ax35, j1By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j1Ax35, j1By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j1Ax33, j1By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j1Ax33, j1By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j1Ax34, j1By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j1Ax34, j1By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j1Ax32, j1By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j1Ax32, j1By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j1Ax03, j1By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j1Ax03, j1By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j1Ax01, j1By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j1Ax01, j1By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j1Ax02, j1By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j1Ax02, j1By03, cx02y03;
--:-:-:-:1      FFMA cx00y03, j1Ax00, j1By03, cx00y03;
--:-:-:-:1      FFMA cx00y02, j1Ax00, j1By02, cx00y02;
--:-:-:Y:1      FFMA cx02y32, j1Ax02, j1By32, cx02y32;
--:-:-:-:1      FFMA cx02y33, j1Ax02, j1By33, cx02y33;
--:-:-:-:1      FFMA cx00y33, j1Ax00, j1By33, cx00y33;
--:-:-:-:1      FFMA cx00y32, j1Ax00, j1By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j1Ax03, j1By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j1Ax03, j1By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j1Ax01, j1By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j1Ax01, j1By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j1Ax34, j1By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j1Ax34, j1By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j1Ax32, j1By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j1Ax32, j1By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j1Ax35, j1By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j1Ax35, j1By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j1Ax33, j1By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j1Ax33, j1By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j1Ax35, j1By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j1Ax35, j1By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j1Ax33, j1By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j1Ax33, j1By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j1Ax34, j1By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j1Ax34, j1By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j1Ax32, j1By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j1Ax32, j1By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j1Ax03, j1By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j1Ax03, j1By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j1Ax01, j1By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j1Ax01, j1By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j1Ax02, j1By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j1Ax02, j1By35, cx02y35;
--:-:-:-:1      FFMA cx00y35, j1Ax00, j1By35, cx00y35;
--:-:-:-:1      FFMA cx00y34, j1Ax00, j1By34, cx00y34;
01:-:-:-:0      FFMA cx02y00, j0Ax02, j0By00, cx02y00; // Wait Dep 1
--:-:-:-:1      LDS.U.128 j1Ax00, [readAs + 4x<5*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j0Ax02, j0By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j0Ax00, j0By01, cx00y01;
--:-:-:-:1      LDS.U.128 j1By00, [readBs + 4x<5*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j0Ax00, j0By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j0Ax03, j0By00, cx03y00;
--:-:-:-:1      LDS.U.128 j1Ax32, [readAs + 4x<5*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j0Ax03, j0By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j0Ax01, j0By01, cx01y01;
--:-:1:-:1      LDS.U.128 j1By32, [readBs + 4x<5*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j0Ax01, j0By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j0Ax34, j0By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j0Ax34, j0By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j0Ax32, j0By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j0Ax32, j0By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j0Ax35, j0By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j0Ax35, j0By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j0Ax33, j0By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j0Ax33, j0By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j0Ax35, j0By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j0Ax35, j0By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j0Ax33, j0By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j0Ax33, j0By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j0Ax34, j0By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j0Ax34, j0By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j0Ax32, j0By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j0Ax32, j0By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j0Ax03, j0By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j0Ax03, j0By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j0Ax01, j0By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j0Ax01, j0By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j0Ax02, j0By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j0Ax02, j0By03, cx02y03;
--:-:-:-:1      FFMA cx00y03, j0Ax00, j0By03, cx00y03;
--:-:-:-:1      FFMA cx00y02, j0Ax00, j0By02, cx00y02;
--:-:-:Y:1      FFMA cx02y32, j0Ax02, j0By32, cx02y32;
--:-:-:-:1      FFMA cx02y33, j0Ax02, j0By33, cx02y33;
--:-:-:-:1      FFMA cx00y33, j0Ax00, j0By33, cx00y33;
--:-:-:-:1      FFMA cx00y32, j0Ax00, j0By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j0Ax03, j0By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j0Ax03, j0By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j0Ax01, j0By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j0Ax01, j0By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j0Ax34, j0By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j0Ax34, j0By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j0Ax32, j0By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j0Ax32, j0By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j0Ax35, j0By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j0Ax35, j0By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j0Ax33, j0By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j0Ax33, j0By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j0Ax35, j0By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j0Ax35, j0By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j0Ax33, j0By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j0Ax33, j0By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j0Ax34, j0By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j0Ax34, j0By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j0Ax32, j0By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j0Ax32, j0By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j0Ax03, j0By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j0Ax03, j0By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j0Ax01, j0By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j0Ax01, j0By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j0Ax02, j0By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j0Ax02, j0By35, cx02y35;
--:-:-:-:1      FFMA cx00y35, j0Ax00, j0By35, cx00y35;
--:-:-:-:1      FFMA cx00y34, j0Ax00, j0By34, cx00y34;
01:-:-:-:0      FFMA cx02y00, j1Ax02, j1By00, cx02y00; // Wait Dep 1
--:-:-:-:1      LDS.U.128 j0Ax00, [readAs + 4x<6*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j1Ax02, j1By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j1Ax00, j1By01, cx00y01;
--:-:-:-:1      LDS.U.128 j0By00, [readBs + 4x<6*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j1Ax00, j1By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j1Ax03, j1By00, cx03y00;
--:-:-:-:1      LDS.U.128 j0Ax32, [readAs + 4x<6*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j1Ax03, j1By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j1Ax01, j1By01, cx01y01;
--:-:1:-:1      LDS.U.128 j0By32, [readBs + 4x<6*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j1Ax01, j1By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j1Ax34, j1By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j1Ax34, j1By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j1Ax32, j1By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j1Ax32, j1By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j1Ax35, j1By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j1Ax35, j1By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j1Ax33, j1By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j1Ax33, j1By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j1Ax35, j1By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j1Ax35, j1By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j1Ax33, j1By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j1Ax33, j1By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j1Ax34, j1By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j1Ax34, j1By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j1Ax32, j1By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j1Ax32, j1By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j1Ax03, j1By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j1Ax03, j1By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j1Ax01, j1By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j1Ax01, j1By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j1Ax02, j1By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j1Ax02, j1By03, cx02y03;
--:-:-:-:0      FFMA cx00y03, j1Ax00, j1By03, cx00y03;
02:-:-:-:1  @P0 STS.128 [writeS + 4x<0*64>], loadX0; // Wait Dep 2
--:-:-:-:1      FFMA cx00y02, j1Ax00, j1By02, cx00y02;
--:-:-:Y:1      FFMA cx02y32, j1Ax02, j1By32, cx02y32;
--:-:-:-:1      FFMA cx02y33, j1Ax02, j1By33, cx02y33;
--:-:-:-:0      FFMA cx00y33, j1Ax00, j1By33, cx00y33;
--:-:-:-:1  @P0 STS.128 [writeS + 4x<2*64>], loadX2;
--:-:-:-:1      FFMA cx00y32, j1Ax00, j1By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j1Ax03, j1By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j1Ax03, j1By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j1Ax01, j1By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j1Ax01, j1By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j1Ax34, j1By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j1Ax34, j1By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j1Ax32, j1By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j1Ax32, j1By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j1Ax35, j1By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j1Ax35, j1By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j1Ax33, j1By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j1Ax33, j1By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j1Ax35, j1By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j1Ax35, j1By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j1Ax33, j1By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j1Ax33, j1By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j1Ax34, j1By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j1Ax34, j1By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j1Ax32, j1By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j1Ax32, j1By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j1Ax03, j1By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j1Ax03, j1By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j1Ax01, j1By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j1Ax01, j1By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j1Ax02, j1By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j1Ax02, j1By35, cx02y35;
--:-:-:-:1      FFMA cx00y35, j1Ax00, j1By35, cx00y35;
--:-:-:-:1      FFMA cx00y34, j1Ax00, j1By34, cx00y34;
01:-:-:-:0      FFMA cx02y00, j0Ax02, j0By00, cx02y00; // Wait Dep 1
--:-:-:-:1      LDS.U.128 j1Ax00, [readAs + 4x<7*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j0Ax02, j0By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j0Ax00, j0By01, cx00y01;
--:-:-:-:1      LDS.U.128 j1By00, [readBs + 4x<7*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j0Ax00, j0By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j0Ax03, j0By00, cx03y00;
--:-:-:-:1      LDS.U.128 j1Ax32, [readAs + 4x<7*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j0Ax03, j0By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j0Ax01, j0By01, cx01y01;
--:-:1:-:1      LDS.U.128 j1By32, [readBs + 4x<7*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j0Ax01, j0By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j0Ax34, j0By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j0Ax34, j0By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j0Ax32, j0By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j0Ax32, j0By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j0Ax35, j0By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j0Ax35, j0By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j0Ax33, j0By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j0Ax33, j0By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j0Ax35, j0By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j0Ax35, j0By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j0Ax33, j0By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j0Ax33, j0By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j0Ax34, j0By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j0Ax34, j0By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j0Ax32, j0By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j0Ax32, j0By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j0Ax03, j0By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j0Ax03, j0By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j0Ax01, j0By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j0Ax01, j0By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j0Ax02, j0By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j0Ax02, j0By03, cx02y03;
--:-:-:-:0      FFMA cx00y03, j0Ax00, j0By03, cx00y03;
04:-:-:-:1  @P0 STS.128 [writeS + 4x<4*64>], loadX4; // Wait Dep 3
--:-:-:-:1      FFMA cx00y02, j0Ax00, j0By02, cx00y02;
--:-:-:Y:1      FFMA cx02y32, j0Ax02, j0By32, cx02y32;
--:-:-:-:1      FFMA cx02y33, j0Ax02, j0By33, cx02y33;
--:-:-:-:0      FFMA cx00y33, j0Ax00, j0By33, cx00y33;
--:-:-:-:1  @P0 STS.128 [writeS + 4x<6*64>], loadX6;
--:-:-:-:1      FFMA cx00y32, j0Ax00, j0By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j0Ax03, j0By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j0Ax03, j0By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j0Ax01, j0By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j0Ax01, j0By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j0Ax34, j0By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j0Ax34, j0By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j0Ax32, j0By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j0Ax32, j0By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j0Ax35, j0By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j0Ax35, j0By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j0Ax33, j0By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j0Ax33, j0By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j0Ax35, j0By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j0Ax35, j0By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j0Ax33, j0By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j0Ax33, j0By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j0Ax34, j0By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j0Ax34, j0By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j0Ax32, j0By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j0Ax32, j0By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j0Ax03, j0By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j0Ax03, j0By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j0Ax01, j0By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j0Ax01, j0By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j0Ax02, j0By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j0Ax02, j0By35, cx02y35;
--:-:-:-:0      FFMA cx00y35, j0Ax00, j0By35, cx00y35;
01:-:-:-:5      BAR.SYNC 0;                            // Wait Dep 1
--:-:-:-:1  @P0 LOP.XOR readAs, readAs, 4x<16*64>;
--:-:-:-:1  @P0 LOP.XOR readBs, readBs, 4x<16*64>;
--:-:-:-:1  @P0 LOP.XOR writeS, writeS, 4x<16*64>;
--:-:-:-:1      FFMA cx00y34, j0Ax00, j0By34, cx00y34;
--:-:-:-:0      FFMA cx02y00, j1Ax02, j1By00, cx02y00;
--:-:-:-:1  @P0 LDS.U.128 j0Ax00, [readAs + 4x<0*64 + 00>];
--:-:-:-:1      FFMA cx02y01, j1Ax02, j1By01, cx02y01;
--:-:-:-:0      FFMA cx00y01, j1Ax00, j1By01, cx00y01;
--:-:-:-:1  @P0 LDS.U.128 j0By00, [readBs + 4x<0*64 + 00>];
--:-:-:-:1      FFMA cx00y00, j1Ax00, j1By00, cx00y00;
--:-:-:-:0      FFMA cx03y00, j1Ax03, j1By00, cx03y00;
--:-:-:-:1  @P0 LDS.U.128 j0Ax32, [readAs + 4x<0*64 + 32>];
--:-:-:-:1      FFMA cx03y01, j1Ax03, j1By01, cx03y01;
--:-:-:-:0      FFMA cx01y01, j1Ax01, j1By01, cx01y01;
--:-:1:-:1  @P0 LDS.U.128 j0By32, [readBs + 4x<0*64 + 32>]; // Set Dep 1
--:-:-:-:1      FFMA cx01y00, j1Ax01, j1By00, cx01y00;
--:-:-:-:1      FFMA cx34y00, j1Ax34, j1By00, cx34y00;
--:-:-:-:1      FFMA cx34y01, j1Ax34, j1By01, cx34y01;
--:-:-:-:1      FFMA cx32y01, j1Ax32, j1By01, cx32y01;
--:-:-:-:1      FFMA cx32y00, j1Ax32, j1By00, cx32y00;
--:-:-:-:1      FFMA cx35y00, j1Ax35, j1By00, cx35y00;
--:-:-:-:1      FFMA cx35y01, j1Ax35, j1By01, cx35y01;
--:-:-:-:1      FFMA cx33y01, j1Ax33, j1By01, cx33y01;
--:-:-:-:1      FFMA cx33y00, j1Ax33, j1By00, cx33y00;
--:-:-:-:1      FFMA cx35y02, j1Ax35, j1By02, cx35y02;
--:-:-:-:1      FFMA cx35y03, j1Ax35, j1By03, cx35y03;
--:-:-:-:1      FFMA cx33y03, j1Ax33, j1By03, cx33y03;
--:-:-:-:1      FFMA cx33y02, j1Ax33, j1By02, cx33y02;
--:-:-:-:1      FFMA cx34y02, j1Ax34, j1By02, cx34y02;
--:-:-:-:1      FFMA cx34y03, j1Ax34, j1By03, cx34y03;
--:-:-:-:1      FFMA cx32y03, j1Ax32, j1By03, cx32y03;
--:-:-:-:1      FFMA cx32y02, j1Ax32, j1By02, cx32y02;
--:-:-:-:1      FFMA cx03y02, j1Ax03, j1By02, cx03y02;
--:-:-:-:1      FFMA cx03y03, j1Ax03, j1By03, cx03y03;
--:-:-:-:1      FFMA cx01y03, j1Ax01, j1By03, cx01y03;
--:-:-:-:1      FFMA cx01y02, j1Ax01, j1By02, cx01y02;
--:-:-:-:1      FFMA cx02y02, j1Ax02, j1By02, cx02y02;
--:-:-:-:1      FFMA cx02y03, j1Ax02, j1By03, cx02y03;
--:-:-:-:1      FFMA cx00y03, j1Ax00, j1By03, cx00y03;
--:-:-:-:1      FFMA cx00y02, j1Ax00, j1By02, cx00y02;
--:-:-:Y:1      FFMA cx02y32, j1Ax02, j1By32, cx02y32;
--:-:-:-:1      FFMA cx02y33, j1Ax02, j1By33, cx02y33;
--:-:-:-:1      FFMA cx00y33, j1Ax00, j1By33, cx00y33;
--:-:-:-:1      FFMA cx00y32, j1Ax00, j1By32, cx00y32;
--:-:-:-:1      FFMA cx03y32, j1Ax03, j1By32, cx03y32;
--:-:-:-:1      FFMA cx03y33, j1Ax03, j1By33, cx03y33;
--:-:-:-:1      FFMA cx01y33, j1Ax01, j1By33, cx01y33;
--:-:-:-:1      FFMA cx01y32, j1Ax01, j1By32, cx01y32;
--:-:-:-:1      FFMA cx34y32, j1Ax34, j1By32, cx34y32;
--:-:-:-:1      FFMA cx34y33, j1Ax34, j1By33, cx34y33;
--:-:-:-:1      FFMA cx32y33, j1Ax32, j1By33, cx32y33;
--:-:-:-:1      FFMA cx32y32, j1Ax32, j1By32, cx32y32;
--:-:-:-:1      FFMA cx35y32, j1Ax35, j1By32, cx35y32;
--:-:-:-:1      FFMA cx35y33, j1Ax35, j1By33, cx35y33;
--:-:-:-:1      FFMA cx33y33, j1Ax33, j1By33, cx33y33;
--:-:-:-:1      FFMA cx33y32, j1Ax33, j1By32, cx33y32;
--:-:-:-:1      FFMA cx35y34, j1Ax35, j1By34, cx35y34;
--:-:-:-:1      FFMA cx35y35, j1Ax35, j1By35, cx35y35;
--:-:-:-:1      FFMA cx33y35, j1Ax33, j1By35, cx33y35;
--:-:-:-:1      FFMA cx33y34, j1Ax33, j1By34, cx33y34;
--:-:-:-:1      FFMA cx34y34, j1Ax34, j1By34, cx34y34;
--:-:-:-:1      FFMA cx34y35, j1Ax34, j1By35, cx34y35;
--:-:-:-:1      FFMA cx32y35, j1Ax32, j1By35, cx32y35;
--:-:-:-:1      FFMA cx32y34, j1Ax32, j1By34, cx32y34;
--:-:-:-:1      FFMA cx03y34, j1Ax03, j1By34, cx03y34;
--:-:-:-:1      FFMA cx03y35, j1Ax03, j1By35, cx03y35;
--:-:-:-:1      FFMA cx01y35, j1Ax01, j1By35, cx01y35;
--:-:-:-:1      FFMA cx01y34, j1Ax01, j1By34, cx01y34;
--:-:-:-:1      FFMA cx02y34, j1Ax02, j1By34, cx02y34;
--:-:-:-:1      FFMA cx02y35, j1Ax02, j1By35, cx02y35;
--:-:-:-:1      FFMA cx00y35, j1Ax00, j1By35, cx00y35;
--:-:-:-:1      FFMA cx00y34, j1Ax00, j1By34, cx00y34;
--:-:-:-:1  @P0 IADD track0, track0, ldx8;
--:-:-:-:1  @P0 IADD track2, track2, ldx8;
--:-:-:-:1  @P0 IADD track4, track4, ldx8;
--:-:-:-:0  @P0 IADD track6, track6, ldx8;
--:-:-:Y:5  @P0 BRA LOOP;

--:-:-:-:1      SHR.U32 cy00, tid32, 1;
--:-:-:-:1      MOV ldc, c[0x0][0x158];
--:-:-:-:1      ISCADD cx, bx, tid31, 6;
--:-:-:-:1      MOV alpha, c[0x0][0x15c];
--:-:-:-:1      ISCADD readCs, tid32, tid31, 3;
--:-:-:-:1      LOP.AND readAs, readAs, 0x7ff;
--:-:-:-:1      ISCADD cy00, by, cy00, 6;
--:-:-:-:1      LOP.AND readBs, readBs, 0x7ff;
--:-:-:-:1      SHL ldc1, ldc, 2;
--:-:-:-:1      ISETP.LT.AND P5, PT, cx, c[0x0][0x144], PT; // cx +  0 < m
--:-:-:-:1      SHL ldc4, ldc, 4;
--:-:-:-:1      FMUL cs0, cx00y00, alpha;
--:-:-:-:1      SHL ldc8, ldc, 5;
--:-:-:-:1      XMAD.MRG xmad_ci, cy00, ldc.H1, RZ;
--:-:-:-:1      ISCADD writeCs, readBs, readAs, 4;
--:-:-:-:1      XMAD ci, cy00, ldc, cx;
--:-:-:-:1      SHL readCs, readCs, 2;
--:-:-:-:1      IADD cx, cx, 32;
--:-:-:-:1      ISCADD ldc28, ldc, -ldc4, 7;
--:-:-:-:1      FMUL cs1, cx01y00, alpha;
--:-:-:-:1      FMUL cs2, cx02y00, alpha;
--:-:-:-:1      XMAD.PSL.CBCC ci, cy00.H1, xmad_ci.H1, ci;
--:-:-:-:1      IADD cy00, cy00, -1;
--:-:-:-:1      ISETP.LT.AND P6, PT, cx, c[0x0][0x144], PT; // cx + 64 < m
--:-:-:-:1      FMUL cs3, cx03y00, alpha;
--:-:-:-:1      FMUL cs4, cx32y00, alpha;
--:-:-:-:1      FMUL cs5, cx33y00, alpha;
--:-:-:-:1      ISCADD Cy00, ci, c[0x0][0x140], 2;
--:-:-:-:1      IADD cy04, cy00, 4;
--:-:-:-:1      IADD cy08, cy00, 8;
--:-:-:-:1      IADD cy12, cy00, 12;
--:-:-:-:1      FMUL cs6, cx34y00, alpha;
--:-:-:-:1      FMUL cs7, cx35y00, alpha;
--:-:-:Y:6      IADD Cy00, Cy00, -ldc1;
--:-:-:-:1      IADD Cy04, Cy00, ldc4;
--:-:-:Y:5      IADD Cy08, Cy00, ldc8;
--:-:-:-:0      IADD Cy12, Cy04, ldc8; // Dual Issue (last instruction after reordering)

--:-:-:-:5      CAL STORE_C;

02:-:-:-:1      FMUL cs0, cx00y01, alpha; // Wait Dep 2
--:-:-:-:1      FMUL cs1, cx01y01, alpha;
--:-:-:-:1      FMUL cs2, cx02y01, alpha;
--:-:-:-:1      FMUL cs3, cx03y01, alpha;
--:-:-:-:1      FMUL cs4, cx32y01, alpha;
--:-:-:-:1      FMUL cs5, cx33y01, alpha;
--:-:-:-:1      FMUL cs6, cx34y01, alpha;
--:-:-:-:0      FMUL cs7, cx35y01, alpha; // Dual Issue
--:-:-:-:5      CAL STORE_C;

02:-:-:-:1      FMUL cs0, cx00y02, alpha; // Wait Dep 2
--:-:-:-:1      FMUL cs1, cx01y02, alpha;
--:-:-:-:1      FMUL cs2, cx02y02, alpha;
--:-:-:-:1      FMUL cs3, cx03y02, alpha;
--:-:-:-:1      FMUL cs4, cx32y02, alpha;
--:-:-:-:1      FMUL cs5, cx33y02, alpha;
--:-:-:-:1      FMUL cs6, cx34y02, alpha;
--:-:-:-:0      FMUL cs7, cx35y02, alpha; // Dual Issue
--:-:-:-:5      CAL STORE_C;

02:-:-:-:1      FMUL cs0, cx00y03, alpha; // Wait Dep 2
--:-:-:-:1      FMUL cs1, cx01y03, alpha;
--:-:-:-:1      FMUL cs2, cx02y03, alpha;
--:-:-:-:1      FMUL cs3, cx03y03, alpha;
--:-:-:-:1      FMUL cs4, cx32y03, alpha;
--:-:-:-:1      FMUL cs5, cx33y03, alpha;
--:-:-:-:1      FMUL cs6, cx34y03, alpha;
--:-:-:-:0      FMUL cs7, cx35y03, alpha; // Dual Issue
--:-:-:-:5      CAL STORE_C;

--:-:-:-:1      IADD cy00, cy00, 28;
--:-:-:-:1      IADD cy04, cy04, 28;
--:-:-:-:1      IADD cy08, cy08, 28;
--:-:-:-:1      IADD cy12, cy12, 28;

02:-:-:-:1      IADD Cy00, Cy00, ldc28; // Wait Dep 2
--:-:-:-:1      IADD Cy04, Cy04, ldc28;
--:-:-:-:1      IADD Cy08, Cy08, ldc28;
--:-:-:-:1      IADD Cy12, Cy12, ldc28;

--:-:-:-:1      FMUL cs0, cx00y32, alpha;
--:-:-:-:1      FMUL cs1, cx01y32, alpha;
--:-:-:-:1      FMUL cs2, cx02y32, alpha;
--:-:-:-:1      FMUL cs3, cx03y32, alpha;
--:-:-:-:1      FMUL cs4, cx32y32, alpha;
--:-:-:-:1      FMUL cs5, cx33y32, alpha;
--:-:-:-:1      FMUL cs6, cx34y32, alpha;
--:-:-:-:0      FMUL cs7, cx35y32, alpha; // Dual Issue
--:-:-:-:5      CAL STORE_C;

02:-:-:-:1      FMUL cs0, cx00y33, alpha; // Wait Dep 2
--:-:-:-:1      FMUL cs1, cx01y33, alpha;
--:-:-:-:1      FMUL cs2, cx02y33, alpha;
--:-:-:-:1      FMUL cs3, cx03y33, alpha;
--:-:-:-:1      FMUL cs4, cx32y33, alpha;
--:-:-:-:1      FMUL cs5, cx33y33, alpha;
--:-:-:-:1      FMUL cs6, cx34y33, alpha;
--:-:-:-:0      FMUL cs7, cx35y33, alpha; // Dual Issue
--:-:-:-:5      CAL STORE_C;

02:-:-:-:1      FMUL cs0, cx00y34, alpha; // Wait Dep 2
--:-:-:-:1      FMUL cs1, cx01y34, alpha;
--:-:-:-:1      FMUL cs2, cx02y34, alpha;
--:-:-:-:1      FMUL cs3, cx03y34, alpha;
--:-:-:-:1      FMUL cs4, cx32y34, alpha;
--:-:-:-:1      FMUL cs5, cx33y34, alpha;
--:-:-:-:1      FMUL cs6, cx34y34, alpha;
--:-:-:-:0      FMUL cs7, cx35y34, alpha; // Dual Issue
--:-:-:-:5      CAL STORE_C;

02:-:-:-:1      FMUL cs0, cx00y35, alpha; // Wait Dep 2
--:-:-:-:1      FMUL cs1, cx01y35, alpha;
--:-:-:-:1      FMUL cs2, cx02y35, alpha;
--:-:-:-:1      FMUL cs3, cx03y35, alpha;
--:-:-:-:1      FMUL cs4, cx32y35, alpha;
--:-:-:-:1      FMUL cs5, cx33y35, alpha;
--:-:-:-:1      FMUL cs6, cx34y35, alpha;
--:-:-:-:0      FMUL cs7, cx35y35, alpha; // Dual Issue
--:-:-:-:5      CAL STORE_C;


--:-:-:-:5      EXIT;

STORE_C:

--:-:-:-:0      IADD cy00, cy00, 1;
--:-:-:-:1      STS.128 [writeCs+4x<00>], cs0;
--:-:-:-:0      IADD cy04, cy04, 1;
--:-:-:-:1      STS.128 [writeCs+4x<32>], cs4;
--:-:-:-:0      IADD cy08, cy08, 1;
--:-:-:-:1      LDS cs0, [readCs + 4x<0*64 + 00>];
--:-:-:-:0      IADD cy12, cy12, 1;
--:-:-:-:1      LDS cs1, [readCs + 4x<0*64 + 32>];
--:-:-:-:0      IADD Cy00, Cy00, ldc1;
--:-:-:-:1      LDS cs2, [readCs + 4x<1*64 + 00>];
--:-:-:-:0      IADD Cy04, Cy04, ldc1;
--:-:-:-:1      LDS cs3, [readCs + 4x<1*64 + 32>];
--:-:-:-:0      IADD Cy08, Cy08, ldc1;
--:-:-:-:1      LDS cs4, [readCs + 4x<2*64 + 00>];
--:-:-:-:0      IADD Cy12, Cy12, ldc1;
--:-:-:-:1      LDS cs5, [readCs + 4x<2*64 + 32>];
--:-:-:-:1      ISETP.LT.AND P0, PT, cy00, c[0x0][0x148], P5; // cy00 < n && cx +  0 < m
--:-:-:-:1      LDS cs6, [readCs + 4x<3*64 + 00>];
--:-:-:-:1      ISETP.LT.AND P1, PT, cy00, c[0x0][0x148], P6; // cy00 < n && cx + 32 < m
--:-:1:-:1      LDS cs7, [readCs + 4x<3*64 + 32>]; // Set Dep 1
--:-:-:-:2      ISETP.LT.AND P2, PT, cy04, c[0x0][0x148], P5; // cy04 < n && cx +  0 < m
--:-:-:Y:7      ISETP.LT.AND P3, PT, cy04, c[0x0][0x148], P6; // cy04 < n && cx + 32 < m
01:-:-:-:1  @P0 STG.CG [Cy00 + 4x<00>], cs0; // Wait Dep 1
--:-:-:-:1      ISETP.LT.AND P0, PT, cy08, c[0x0][0x148], P5; // cy08 < n && cx +  0 < m
--:-:-:-:1  @P1 STG.CG [Cy00 + 4x<32>], cs1;
--:-:-:-:1      ISETP.LT.AND P1, PT, cy08, c[0x0][0x148], P6; // cy08 < n && cx + 32 < m
--:-:-:-:1  @P2 STG.CG [Cy04 + 4x<00>], cs2;
--:-:-:-:1      ISETP.LT.AND P2, PT, cy12, c[0x0][0x148], P5; // cy12 < n && cx +  0 < m
--:-:-:-:1  @P3 STG.CG [Cy04 + 4x<32>], cs3;
--:-:-:Y:7      ISETP.LT.AND P3, PT, cy12, c[0x0][0x148], P6; // cy12 < n && cx + 32 < m
--:-:-:-:2  @P0 STG.CG [Cy08 + 4x<00>], cs4;
--:-:-:-:2  @P1 STG.CG [Cy08 + 4x<32>], cs5;
--:-:-:-:2  @P2 STG.CG [Cy12 + 4x<00>], cs6;
--:2:-:-:1  @P3 STG.CG [Cy12 + 4x<32>], cs7; // Set Dep 2

--:-:-:-:5      RET;

